#include "BulletSoftBody/btSoftRigidDynamicsWorld.h"
#ifdef __cplusplus
extern "C" {
#endif
btSoftRigidDynamicsWorld* bullet_NewbtSoftRigidDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration,btSoftBodySolver* softBodySolver){
	btDispatcher * c_arg_dispatcher=(btDispatcher *)(void*)(dispatcher);
	btBroadphaseInterface * c_arg_pairCache=(btBroadphaseInterface *)(void*)(pairCache);
	btConstraintSolver * c_arg_constraintSolver=(btConstraintSolver *)(void*)(constraintSolver);
	btCollisionConfiguration * c_arg_collisionConfiguration=(btCollisionConfiguration *)(void*)(collisionConfiguration);
	btSoftBodySolver * c_arg_softBodySolver=(btSoftBodySolver *)(void*)(softBodySolver);
	btSoftRigidDynamicsWorld* wrap_out = new btSoftRigidDynamicsWorld(c_arg_dispatcher,c_arg_pairCache,c_arg_constraintSolver,c_arg_collisionConfiguration,c_arg_softBodySolver);
	return wrap_out;
}

void bullet_btSoftRigidDynamicsWorld_addSoftBody(btSoftRigidDynamicsWorld* c_this,btSoftBody* body,int collisionFilterGroup,int collisionFilterMask){
	btSoftBody * c_arg_body=(btSoftBody *)(void*)(body);
	int c_arg_collisionFilterGroup=collisionFilterGroup;
	int c_arg_collisionFilterMask=collisionFilterMask;
	c_this->addSoftBody(c_arg_body,c_arg_collisionFilterGroup,c_arg_collisionFilterMask);
}

int bullet_btSoftRigidDynamicsWorld_getDrawFlags(btSoftRigidDynamicsWorld* c_this){
	int c_out = c_this->getDrawFlags();
	int wrap_out = (c_out);
	return wrap_out;
}

btSoftBodyWorldInfo* bullet_btSoftRigidDynamicsWorld_getWorldInfo(btSoftRigidDynamicsWorld* c_this){
	btSoftBodyWorldInfo& c_out = c_this->getWorldInfo();
	btSoftBodyWorldInfo* wrap_out = (btSoftBodyWorldInfo*)(&c_out);
	return wrap_out;
}

btSoftBodyWorldInfo* bullet_btSoftRigidDynamicsWorld_getWorldInfo1(btSoftRigidDynamicsWorld* c_this){
	btSoftBodyWorldInfo const& c_out = c_this->getWorldInfo();
	btSoftBodyWorldInfo* wrap_out = (btSoftBodyWorldInfo*)(&c_out);
	return wrap_out;
}

void bullet_btSoftRigidDynamicsWorld_rayTestSingle(btSoftRigidDynamicsWorld* c_this,btTransform* rayFromTrans,btTransform* rayToTrans,btCollisionObject* collisionObject,btCollisionShape* collisionShape,btTransform* colObjWorldTransform,btCollisionWorld::RayResultCallback* resultCallback){
	btTransform const& c_arg_rayFromTrans=(btTransform const&)(*rayFromTrans);
	btTransform const& c_arg_rayToTrans=(btTransform const&)(*rayToTrans);
	btCollisionObject * c_arg_collisionObject=(btCollisionObject *)(void*)(collisionObject);
	btCollisionShape const * c_arg_collisionShape=(btCollisionShape const *)(void*)(collisionShape);
	btTransform const& c_arg_colObjWorldTransform=(btTransform const&)(*colObjWorldTransform);
	btCollisionWorld::RayResultCallback& c_arg_resultCallback=(btCollisionWorld::RayResultCallback&)(*resultCallback);
	c_this->rayTestSingle(c_arg_rayFromTrans,c_arg_rayToTrans,c_arg_collisionObject,c_arg_collisionShape,c_arg_colObjWorldTransform,c_arg_resultCallback);
}

void bullet_btSoftRigidDynamicsWorld_removeSoftBody(btSoftRigidDynamicsWorld* c_this,btSoftBody* body){
	btSoftBody * c_arg_body=(btSoftBody *)(void*)(body);
	c_this->removeSoftBody(c_arg_body);
}

void bullet_btSoftRigidDynamicsWorld_setDrawFlags(btSoftRigidDynamicsWorld* c_this,int f){
	int c_arg_f=f;
	c_this->setDrawFlags(c_arg_f);
}

#ifdef __cplusplus
}
#endif
